package com.zhuhuix.startup.security.rest;

/**
 * @program: opensource_startup
 * @description:
 * @author: lee
 * @create: 2021-01-03 18:00
 **/
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/api/Autozi")
public class TestWxAuthorization {
    /**
     * @Title: decodeUserInfo
     * @author：lizheng
     * @date：2018年3月25日
     * @Description: 解密用户敏感数据

     * @return
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @RequestMapping(value = "/decodeUserInfo", method = RequestMethod.GET)
    @ResponseBody
    public Map decodeUserInfo() {

        Map map = new HashMap();

        /////////////////////////////////////////////////////////////////////////自己定义的code

        String code = "xxxxxxx";

        // 登录凭证不能为空
        if (code == null || code.length() == 0) {
            map.put("status", 0);
            map.put("msg", "code 不能为空");
            return map;
        }

        // 小程序唯一标识 (在微信小程序管理后台获取)
        String wxspAppid = WeiXin.APPID;
        // 小程序的 app secret (在微信小程序管理后台获取)
        String wxspSecret = WeiXin.APP_SECRECT;
        // 授权（必填）
        String grant_type = WeiXin.AUTHORIZATION_CODE;

        //////////////// 1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid
        // 请求参数
        String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type="
                + grant_type;
        // 发送请求
        String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);


        //////////////// 2、对encryptedData加密数据进行AES解密 ////////////////
        try {
            // 解析相应内容（转换成json对象）
            JSONObject json = new JSONObject(sr);
            // 获取会话密钥（session_key）
            String session_key = json.get("session_key").toString();
            // 用户的唯一标识（openid）
            String openid = (String) json.get("openid").toString();



            map.put( "session_key",session_key);
            map.put( "openId",openid );
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }

}
